package com.tedu.api.io;

import org.junit.Test;

import java.io.*;
import java.nio.Buffer;
import java.util.Scanner;

/**
 * 案例：做一个记事本程序
 * 需求：程序开始之后，【从控制台】要求用户输入文件名-->假设：  a.txt
 * 然后，针对文本进行读写操作
 * 用户可以在【控制台】输入一行行的文本内容，要求：写入到a.txt文件中
 * 判断，如果用户输入“退出/exit”，程序结束
 * a.txt 直接出现在API项目下，保存对应文本的内容
 * 要求：1.标准流--结合异常处理
 *      2.输出流--->输入流【读】 单元测试@Test   testNote()
 *      3.
 */
public class Note {
    //单元测试：相对路径   ./a.txt 当前父级文件夹路径  API下
    //主方法：  相对路径  ./a.txt  当前跟级文件夹路径   javaAPI下
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
        FileOutputStream fos = null;
        OutputStreamWriter osw = null;      //转换流
        BufferedWriter bw = null;  //缓冲输出流---加速字符串的传输
        PrintWriter pw = null;
        try {
            //1.从控制台输入：   a.txt文本
            Scanner input = new Scanner(System.in);
            System.out.println("请输入你的文件名字：");
            String text = input.nextLine();  //获取一行文本
            // System.out.println(text);   打桩
            //2.流---写
            fos = new FileOutputStream(text);
            osw = new OutputStreamWriter(fos, "UTF8");
            bw = new BufferedWriter(osw);
            pw = new PrintWriter(bw);
            //3.往假设 a.txt  写入文件---一直进行写入，直到写出文件”退出/exit“
            //3.1定义字符串变量--赋值为null，接受用户每次输入”文本内容“
            String line = null;
            //3.2补充：【考虑用户体验】  提示内容：
            System.out.println("请开始输入内容【'退出'程序结束】：");
            //3.2一直写入
            while (true) {
                line = input.nextLine();         //从控制台里获取一行文本
                //3.3  判断条件---判断line是否等于  退出  或者  exit  程序结束
                if (line.equals("退出") || line.equals("exit")) {
                    break;//跳出方法体
                }
                //3.4 PW字符输出流--写出
                pw.println(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //3.5【用户体验】 拜拜~
            System.out.println("拜拜~,请查看API文件夹生产文件！！");
            if (pw != null)
                //3.6关闭高级流
                pw.close();
        }
    }

}